<?php
// +----------------------------------------------------------------------
// | Niucloud-admin 企业快速开发的多应用管理平台
// +----------------------------------------------------------------------
// | 官方网址：https://www.niucloud.com
// +----------------------------------------------------------------------
// | niucloud团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: Niucloud Team
// +----------------------------------------------------------------------

namespace app\api\controller\member;

use app\dict\member\MemberAccountTypeDict;
use app\dict\pay\TransferDict;
use app\service\api\member\MemberCashOutService;
use core\base\BaseApiController;
use think\Response;

class MemberCashOut extends BaseApiController
{

    /**
     * 会员提现列表
     * @return Response
     */
    public function lists()
    {
        $data = array_filter($this->request->params([
            ['status', ''],
            ['account_type', '']
        ]), function ($value) {
            return $value !== '';
        });
        return success((new MemberCashOutService())->getPage($data));
    }

    /**
     * 提现详情
     * @return Response
     */
    public function info($id)
    {
        return success((new MemberCashOutService())->getInfo($id));
    }

    /**
     * 提现配置
     * @return Response
     */
    public function config()
    {
        return success((new MemberCashOutService())->getCashOutConfig());
    }

    /**
     * 转账方式
     * @return Response
     */
    public function getTransferType()
    {
        return success(TransferDict::getTransferType([], false));
    }

    /**
     * 申请提现
     * @return Response
     */
    public function apply()
    {
        $data = $this->request->params([
            ['apply_money', 0],
            ['account_type', MemberAccountTypeDict::MONEY],
            ['transfer_type', ''],
            ['account_id', 0],
            ['transfer_payee', []],//收款方信息
        ]);
        $this->validate($data, 'app\validate\member\CashOut.apply');
        return success(data: (new MemberCashOutService())->apply($data));
    }

    /**
     * 撤销提现申请
     * @param $id
     * @return Response
     */
    public function cancel($id)
    {
        return success(data: (new MemberCashOutService())->cancel($id));
    }

    /**
     * 开始转账
     * @param $id
     * @return Response
     */
    public function transfer($id)
    {
        $data = $this->request->params([
            ['open_id', 0],
        ]);
        return success(data: (new MemberCashOutService())->transfer($id, $data));
    }

}
